//全局默认配置
//1. baseURL 基础路径
axios.defaults.baseURL="http://localhost:9999";

//2.超时时间
axios.defaults.timeout=60000;

//3.跨域资源凭证
axios.defaults.withCredentials=true;

//判断是不是纯对象
const isPlainObject = function isPlainObject(obj) {
	let proto, Ctor;
	if (!obj || Object.prototype.toString.call(obj) !== "[object Object]") return false;
	proto = Object.getPrototypeOf(obj);
	if (!proto) return true;
	Ctor = proto.hasOwnProperty('constructor') && proto.constructor;
	return typeof Ctor === "function" && Ctor === Object;
};

//4. post类请求，参数格式 urlencoded
axios.defaults.transformRequest=function(data){//data必须普通对象  {name:"lili"}
	if(isPlainObject(data)){//data必须普通对象
		data=Qs.stringify(data)
	}
	return data;
}

// 添加请求拦截器  发送请求之前，统一做什么处理
// 可以配置 token
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
// 数据返回 回来的时候，统一做什么处理
axios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response.data;
  }, function (error) {
	 //console.dir(error);
	 //错误2大类 
	 //1. 有状态码的错误 response有值---》status:404...
	 //2. 没有状态码的错误
	   //2.1 请求超时code: "ECONNABORTED"
	   //2.2 断网类错误
	let err="111";
	if(error&&error.response){//有状态码的错误 response有值
	    let status=error.response.status;
		switch (status){
			case 404:
			    err="找不到页面"
				break;
			case 500:
			    err="服务器错误"
				break;
			//....
			default:
			    err="未知错误"
				break;
		}
	}else{//2. 没有状态码的错误
		if(error.code=="ECONNABORTED"){//请求超时code: "ECONNABORTED"
			err="请求超时";
		}else if(!navigator.onLine){//断网类错误
			err="断网了";
		}
	}
 
    return Promise.reject(err);
  });